சாலிடிட்டி மற்றும் Web3 உடன் முன்புற ஸ்மார்ட் ஒப்பந்த ஒருங்கிணைப்பை ஆராயுங்கள். பிளாக்செயின் தர்க்கத்துடன் UI-களை இணைக்கும் dApps உருவாக்குவது எப்படி என்பதைக் கற்று, உலகளாவிய டெவலப்பர்களுக்கு நடைமுறை நுண்ணறிவுகளைப் பெறுங்கள்.
முன்புற ஸ்மார்ட் ஒப்பந்தங்கள்: உலகளாவிய பார்வையாளர்களுக்கான தடையற்ற சாலிடிட்டி மற்றும் Web3 ஒருங்கிணைப்பு
பரவலாக்கப்பட்ட இணையம், அல்லது Web3, வேகமாக வளர்ந்து வருகிறது, தனிநபர்களுக்கும் வணிகங்களுக்கும் தங்கள் தரவு மற்றும் டிஜிட்டல் சொத்துக்களின் மீது முன்னோடியில்லாத கட்டுப்பாட்டை வழங்குகிறது. இந்த புரட்சியின் மையத்தில் ஸ்மார்ட் ஒப்பந்தங்கள் உள்ளன – குறியீட்டில் எழுதப்பட்ட சுய-செயல்படுத்தும் ஒப்பந்தங்கள், முதன்மையாக எத்திரியம் போன்ற தளங்களில். பின்தள தர்க்கம் பிளாக்செயினில் இருந்தாலும், இந்த சக்திவாய்ந்த ஒப்பந்தங்களுடன் தொடர்புகொள்வதற்கான பயனரின் அனுபவம் முன்புறத்தால் உருவாக்கப்படுகிறது. இந்தப் வலைப்பதிவு இடுகை முன்புற ஸ்மார்ட் ஒப்பந்த ஒருங்கிணைப்பின் சிக்கலான உலகத்தை ஆராய்கிறது, பிரபலமான முன்புற கட்டமைப்புகளுடன் கட்டமைக்கப்பட்ட பயனர் இடைமுகங்களுக்கும் சாலிடிட்டி ஸ்மார்ட் ஒப்பந்தங்களின் வலுவான தர்க்கத்திற்கும் இடையிலான இடைவெளியை டெவலப்பர்கள் எவ்வாறு திறம்பட நிரப்ப முடியும் என்பதில் கவனம் செலுத்துகிறது, இவை அனைத்தும் ஒரு மாறுபட்ட உலகளாவிய பார்வையாளர்களைப் பூர்த்தி செய்கின்றன.
முக்கிய கூறுகளைப் புரிந்துகொள்வது: சாலிடிட்டி மற்றும் Web3
ஒருங்கிணைப்பிற்குள் நுழைவதற்கு முன், அடிப்படை கட்டுமானத் தொகுதிகளைப் புரிந்துகொள்வது மிக முக்கியம்:
சாலிடிட்டி: ஸ்மார்ட் ஒப்பந்தங்களின் மொழி
சாலிடிட்டி என்பது பல்வேறு பிளாக்செயின் தளங்களில், குறிப்பாக எத்திரியம் மற்றும் EVM-இணக்கமான சங்கிலிகளில் ஸ்மார்ட் ஒப்பந்தங்களை எழுதுவதற்காக சிறப்பாக வடிவமைக்கப்பட்ட ஒரு உயர்நிலை, பொருள் சார்ந்த நிரலாக்க மொழி ஆகும். இதன் தொடரியல் ஜாவாஸ்கிரிப்ட், பைத்தான் மற்றும் C++ ஆகியவற்றுடன் ஒற்றுமைகளைக் கொண்டுள்ளது, இது பிளாக்செயினுக்கு மாறும் டெவலப்பர்களுக்கு ஒப்பீட்டளவில் அணுகக்கூடியதாக அமைகிறது. சாலிடிட்டி குறியீடு பைட் கோடாக தொகுக்கப்பட்டு, பின்னர் பிளாக்செயினின் மெய்நிகர் இயந்திரத்தில் வரிசைப்படுத்தப்பட்டு செயல்படுத்தப்படுகிறது.
சாலிடிட்டியின் முக்கிய பண்புகள் பின்வருமாறு:
- நிலைத்தன்மை கொண்ட வகைகள்: மாறிகளுக்கு நிலையான வகைகள் உள்ளன, இது தொகுக்கும் நேரத்தில் பிழைகளைக் கண்டறிய உதவுகிறது.
- ஒப்பந்தம் சார்ந்த: குறியீடு ஒப்பந்தங்களாக ஒழுங்கமைக்கப்பட்டுள்ளது, இவை வரிசைப்படுத்தலின் அடிப்படை அலகுகள்.
- நிகழ்வு உமிழ்வு: சங்கிலிக்கு வெளியே உள்ள பயன்பாடுகளுக்கு நிலை மாற்றங்களைப் பற்றி சமிக்ஞை செய்ய ஒப்பந்தங்கள் நிகழ்வுகளை வெளியிட முடியும்.
- மரபுரிமை: மரபுரிமை மூலம் குறியீடு மறுபயன்பாட்டை ஆதரிக்கிறது.
- மாற்றிச் செயல்பாடுகள்: செயல்பாடுகளில் முன் மற்றும் பிந்தைய செயலாக்கச் சோதனைகளை அனுமதிக்கிறது.
ஒரு எளிய சாலிடிட்டி ஒப்பந்தத்தின் எடுத்துக்காட்டு (எளிமைப்படுத்தப்பட்டது):
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
contract SimpleStorage {
uint256 public storedData;
function set(uint256 x) public {
storedData = x;
}
function get() public view returns (uint256) {
return storedData;
}
}
Web3: பிளாக்செயினுக்கான பாலம்
Web3 என்பது வளர்ந்து வரும் பரவலாக்கப்பட்ட இணையத்தைக் குறிக்கிறது, இது பிளாக்செயின் தொழில்நுட்பம் மற்றும் பியர்-டு-பியர் நெட்வொர்க்குகளால் வகைப்படுத்தப்படுகிறது. முன்புற மேம்பாட்டின் சூழலில், ஜாவாஸ்கிரிப்ட் பயன்பாடுகளை எத்திரியம் பிளாக்செயினுடன் தொடர்பு கொள்ள அனுமதிக்கும் அத்தியாவசிய கருவிகள் Web3 நூலகங்கள் ஆகும். இந்த நூலகங்கள் பிளாக்செயின் முனைகளுடன் நேரடியாக தொடர்புகொள்வதன் சிக்கல்களை நீக்கி, இதற்கான வசதியான முறைகளை வழங்குகின்றன:
- பிளாக்செயினுடன் இணைத்தல் (HTTP அல்லது WebSockets வழியாக).
- கணக்கு தகவல்களை அணுகுதல்.
- பரிவர்த்தனைகளை அனுப்புதல்.
- ஸ்மார்ட் ஒப்பந்த செயல்பாடுகளை அழைத்தல்.
- பிளாக்செயின் நிகழ்வுகளைக் கேட்டல்.
மிகவும் முக்கியமான இரண்டு Web3 ஜாவாஸ்கிரிப்ட் நூலகங்கள்:
- web3.js: எத்திரியம் பிளாக்செயினுடன் தொடர்புகொள்வதற்கான பரந்த அளவிலான செயல்பாடுகளை வழங்கும் ஒரு விரிவான நூலகம். இது நீண்ட காலமாக Web3 மேம்பாட்டின் ஒரு முக்கிய அங்கமாக உள்ளது.
- ethers.js: ஒரு நவீன, இலகுரக, மற்றும் பெரும்பாலும் விரும்பப்படும் மாற்று, இது பயன்பாட்டின் எளிமை, பாதுகாப்பு மற்றும் செயல்திறனில் கவனம் செலுத்துகிறது. இது அதிக மாடுலர் வடிவமைப்பை வழங்குகிறது மற்றும் பல பணிகளுக்கு பொதுவாக டெவலப்பர்களுக்கு மிகவும் நட்பானது எனக் கருதப்படுகிறது.
முன்புற-பின்தள இணைப்பு: இது எவ்வாறு செயல்படுகிறது
முன்புற ஸ்மார்ட் ஒப்பந்த ஒருங்கிணைப்பின் மந்திரம், பிளாக்செயினில் செயல்பாடுகளைத் தூண்டுவதற்கும் அதன் நிலையை பயனருக்குக் காண்பிப்பதற்கும் முன்புற பயன்பாடுகளின் திறனில் உள்ளது. இது பொதுவாக பின்வரும் ஓட்டத்தை உள்ளடக்கியது:
- பயனர் தொடர்பு: ஒரு பயனர் முன்புற UI உடன் தொடர்புகொள்கிறார், எடுத்துக்காட்டாக, கிரிப்டோகரன்சியை அனுப்ப ஒரு பொத்தானை கிளிக் செய்வதன் மூலம் அல்லது ஒரு ஸ்மார்ட் ஒப்பந்தத்தில் ஒரு பதிவை புதுப்பிப்பதன் மூலம்.
- Web3 நூலக அழைப்பு: முன்புற பயன்பாடு, ஒரு Web3 நூலகத்தைப் (எ.கா., ethers.js) பயன்படுத்தி, இணைக்கப்பட்ட கிரிப்டோ வாலட் (எ.கா., மெட்டாமாஸ்க்) வழியாகச் செயலை உறுதிப்படுத்த பயனரைத் தூண்டுகிறது.
- பரிவர்த்தனை உருவாக்கம்: Web3 நூலகம் தேவையான தரவுகளைக் கொண்ட ஒரு பரிவர்த்தனை பொருளை உருவாக்குகிறது, அதாவது இலக்கு ஸ்மார்ட் ஒப்பந்த முகவரி, அழைக்க வேண்டிய செயல்பாடு மற்றும் உள்ளீட்டு அளவுருக்கள்.
- வாலட் கையொப்பம்: பயனரின் கிரிப்டோ வாலட் அவர்களின் தனிப்பட்ட சாவியைப் பயன்படுத்தி இந்த பரிவர்த்தனையில் கையொப்பமிடுகிறது, இது செயலுக்கு அங்கீகாரம் அளிக்கிறது.
- பரிவர்த்தனை ஒளிபரப்பு: கையொப்பமிடப்பட்ட பரிவர்த்தனை எத்திரியம் நெட்வொர்க்கிற்கு (அல்லது பிற இணக்கமான பிளாக்செயினுக்கு) ஒளிபரப்பப்படுகிறது.
- பிளாக்செயின் செயல்படுத்துதல்: நெட்வொர்க்கில் உள்ள ஒரு முனை பரிவர்த்தனையைப் பெற்று, அதைச் சரிபார்த்து, ஸ்மார்ட் ஒப்பந்தத்திற்குள் தொடர்புடைய செயல்பாட்டைச் செயல்படுத்துகிறது.
- நிலை புதுப்பிப்பு: ஸ்மார்ட் ஒப்பந்த செயலாக்கம் அதன் நிலையை மாற்றியமைத்தால் (எ.கா., ஒரு மாறியை மாற்றுகிறது), இந்த புதுப்பிப்பு பிளாக்செயினில் பதிவு செய்யப்படுகிறது.
- முன்புற கருத்து: முன்புற பயன்பாடு பரிவர்த்தனை நிலையை கண்காணிக்கலாம் மற்றும் பயனருக்கு கருத்துக்களை வழங்க ஸ்மார்ட் ஒப்பந்தத்தால் வெளியிடப்பட்ட நிகழ்வுகளைக் கேட்கலாம் (எ.கா., "பரிவர்த்தனை வெற்றிகரமானது!" அல்லது புதுப்பிக்கப்பட்ட தரவைக் காண்பித்தல்).
உங்கள் முன்புற கட்டமைப்பு மற்றும் Web3 நூலகத்தைத் தேர்ந்தெடுத்தல்
முன்புற கட்டமைப்பு மற்றும் Web3 நூலகத்தின் தேர்வு மேம்பாட்டு அனுபவம் மற்றும் பயன்பாட்டின் கட்டமைப்பை கணிசமாகப் பாதிக்கிறது. எந்தவொரு நவீன ஜாவாஸ்கிரிப்ட் கட்டமைப்பையும் பயன்படுத்த முடியும் என்றாலும், சில Web3 இடத்தில் அவற்றின் சுற்றுச்சூழல் அமைப்பு மற்றும் சமூக ஆதரவு காரணமாக பொதுவாகப் பயன்படுத்தப்படுகின்றன.
பிரபலமான முன்புற கட்டமைப்புகள்:
- ரியாக்ட் (React): பயனர் இடைமுகங்களை உருவாக்குவதற்கான ஒரு அறிவிப்பு ஜாவாஸ்கிரிப்ட் நூலகம், அதன் கூறு அடிப்படையிலான கட்டமைப்பு மற்றும் பெரிய சுற்றுச்சூழல் அமைப்புக்கு பெயர் பெற்றது. dApps க்கான ஒரு பரவலான தேர்வாக ரியாக்ட் உள்ளது.
- Vue.js: ஒரு முற்போக்கான ஜாவாஸ்கிரிப்ட் கட்டமைப்பு, இதுவும் கூறு அடிப்படையிலானது மற்றும் அதன் பயன்பாட்டின் எளிமை மற்றும் மென்மையான கற்றல் வளைவுக்காகப் பாராட்டப்படுகிறது.
- ஆங்குலர் (Angular): பெரிய அளவிலான பயன்பாடுகளை உருவாக்குவதற்கான ஒரு விரிவான டைப்ஸ்கிரிப்ட் அடிப்படையிலான கட்டமைப்பு.
- ஸ்வெல்ட் (Svelte): உலாவியில் இருந்து கட்டுமான படிக்கு வேலையை மாற்றும் ஒரு தொகுப்பி, இதன் விளைவாக அதிக செயல்திறன் கொண்ட பயன்பாடுகள் உருவாகின்றன.
Web3 நூலகக் கருத்தாய்வுகள்:
- ethers.js: அதன் நவீன வடிவமைப்பு, மேம்படுத்தப்பட்ட பாதுகாப்பு அம்சங்கள் மற்றும் விரிவான ஆவணங்கள் காரணமாக புதிய திட்டங்களுக்கு பொதுவாகப் பரிந்துரைக்கப்படுகிறது. இது வாலட்களை நிர்வகிப்பதற்கும், ஒப்பந்தங்களுடன் தொடர்புகொள்வதற்கும், வழங்குநர்களைக் கையாளுவதற்கும் வலுவான பயன்பாடுகளை வழங்குகிறது.
- web3.js: மரபுவழி திட்டங்களில் இன்னும் பரவலாகப் பயன்படுத்தப்படுகிறது. இது ஒரு சக்திவாய்ந்த நூலகம், ஆனால் சில பணிகளுக்கு ethers.js ஐ விட சில சமயங்களில் அதிக சொற்பொழிவு மற்றும் குறைவாக உள்ளுணர்வுடன் இருக்கும்.
ஒருங்கிணைப்பைக் காண்பிக்கும் நோக்கத்திற்காக, நவீன dApp மேம்பாட்டிற்கான பொதுவான மற்றும் பயனுள்ள அடுக்குகளைப் பிரதிநிதித்துவப்படுத்துவதால், நாங்கள் முதன்மையாக ரியாக்ட் மற்றும் ethers.js ஐப் பயன்படுத்துவோம்.
படிநிலை ஒருங்கிணைப்பு வழிகாட்டி (ரியாக்ட் மற்றும் ethers.js உடன்)
சாலிடிட்டி ஸ்மார்ட் ஒப்பந்தத்துடன் முன்புறத்தை ஒருங்கிணைப்பதற்கான ஒரு நடைமுறை உதாரணத்தைப் பார்ப்போம். நீங்கள் ஒரு எளிய SimpleStorage ஒப்பந்தத்தை (மேலே காட்டப்பட்டுள்ளபடி) தொகுத்து ஒரு டெஸ்ட்நெட் அல்லது உள்ளூர் மேம்பாட்டு சூழலில் வரிசைப்படுத்தியுள்ளீர்கள் என்று கருதுவோம்.
முன்நிபந்தனைகள்:
- Node.js மற்றும் npm/yarn: உங்கள் கணினியில் நிறுவப்பட்டுள்ளது.
- ஒரு ரியாக்ட் திட்டம்: Create React App அல்லது ஒத்த கருவியைப் பயன்படுத்தி அமைக்கப்பட்டது.
- ஒரு ஸ்மார்ட் ஒப்பந்தம்: வரிசைப்படுத்தப்பட்டது மற்றும் அதன் ABI (Application Binary Interface) மற்றும் முகவரி அறியப்பட்டவை.
- ஒரு கிரிப்டோ வாலட்: மெட்டாமாஸ்க் போன்றது, ஒரு டெஸ்ட்நெட் கணக்குடன் நிறுவப்பட்டு உள்ளமைக்கப்பட்டது.
1. தேவையான நூலகங்களை நிறுவுதல்:
உங்கள் ரியாக்ட் திட்டத்தின் ரூட் டைரக்டரிக்குச் சென்று ethers.js ஐ நிறுவவும்:
npm install ethers
# or
yarn add ethers
2. ஸ்மார்ட் ஒப்பந்த விவரங்களைப் பெறுதல்:
வரிசைப்படுத்தப்பட்ட உங்கள் ஸ்மார்ட் ஒப்பந்தத்திலிருந்து இரண்டு முக்கியமான தகவல்கள் உங்களுக்குத் தேவைப்படும்:
- ஒப்பந்த முகவரி: பிளாக்செயினில் உங்கள் ஒப்பந்தத்தின் தனித்துவமான அடையாளம்.
- ஒப்பந்த ABI (Application Binary Interface): ஒப்பந்தத்தின் செயல்பாடுகள், நிகழ்வுகள் மற்றும் நிலை மாறிகள் ஆகியவற்றை விவரிக்கும் ஒரு JSON கோப்பு, இது முன்புறம் அதனுடன் எவ்வாறு தொடர்புகொள்வது என்பதைப் புரிந்துகொள்ள அனுமதிக்கிறது.
வழக்கமாக, Hardhat அல்லது Truffle போன்ற கருவிகளைப் பயன்படுத்தி உங்கள் சாலிடிட்டி ஒப்பந்தத்தை நீங்கள் தொகுக்கும்போது, ABI மற்றும் பைட்கோடைக் கொண்ட ஒரு கலைப்பொருள் கோப்பைப் பெறுவீர்கள்.
3. Web3 வழங்குநரை அமைத்தல்:
உங்கள் முன்புற குறியீட்டில் முதல் படி பிளாக்செயினுடன் ஒரு இணைப்பை நிறுவுவதாகும். இது ஒரு வழங்குநர் மூலம் செய்யப்படுகிறது. ஒரு உலாவி சூழலில், மெட்டாமாஸ்க் போன்ற வாலட்டில் இருந்து உள்ளீடு செய்யப்பட்ட Web3 வழங்குநரை மேம்படுத்துவதே பொதுவான வழி.
import { ethers } from 'ethers';
import React, { useState, useEffect } from 'react';
// --- Contract Details ---
const contractAddress = "YOUR_CONTRACT_ADDRESS"; // Replace with your contract's address
const contractABI = [ /* Your contract's ABI as a JSON array */ ];
function App() {
const [account, setAccount] = useState(null);
const [storedValue, setStoredValue] = useState(0);
const [inputValue, setInputValue] = useState('');
const [signer, setSigner] = useState(null);
const [contract, setContract] = useState(null);
useEffect(() => {
const loadBlockchainData = async () => {
if (window.ethereum) {
const provider = new ethers.providers.Web3Provider(window.ethereum);
setSigner(provider.getSigner());
const accounts = await window.ethereum.request({ method: 'eth_requestAccounts' });
setAccount(accounts[0]);
const contractInstance = new ethers.Contract(contractAddress, contractABI, provider);
setContract(contractInstance);
const currentValue = await contractInstance.storedData();
setStoredValue(currentValue.toString());
} else {
alert('MetaMask or another Ethereum-compatible wallet is required!');
}
};
loadBlockchainData();
// Listen for account changes
window.ethereum.on('accountsChanged', (accounts) => {
if (accounts.length > 0) {
setAccount(accounts[0]);
} else {
setAccount(null);
}
});
}, []);
// ... rest of the component
}
export default App;
விளக்கம்:
- நாங்கள்
ethersஐ இறக்குமதி செய்கிறோம். - நாங்கள்
contractAddressமற்றும்contractABIக்கான இடத்தை வரையறுக்கிறோம். useStateஹூக்குகள் இணைக்கப்பட்ட கணக்கு, ஒப்பந்தத்திலிருந்து படிக்கப்பட்ட மதிப்பு, மதிப்பை அமைப்பதற்கான உள்ளீடு, கையொப்பமிட்டவர் பொருள் மற்றும் ஒப்பந்த நிகழ்வை நிர்வகிக்கப் பயன்படுத்தப்படுகின்றன.useEffectஹூக் கூறு ஏற்றப்பட்டவுடன் ஒருமுறை இயங்கும்.window.ethereumஒரு Web3 வழங்குநர் (மெட்டாமாஸ்க் போன்றவை) கிடைக்கிறதா என்பதைச் சரிபார்க்கிறது.new ethers.providers.Web3Provider(window.ethereum)பயனரின் வாலட்டுடன் இணைக்கப்பட்ட ஒரு வழங்குநர் நிகழ்வை உருவாக்குகிறது.provider.getSigner()இணைக்கப்பட்ட பயனரைக் குறிக்கும், பரிவர்த்தனைகளில் கையொப்பமிடக்கூடிய ஒரு பொருளைப் பெறுகிறது.window.ethereum.request({ method: 'eth_requestAccounts' })பயனரை அவர்களின் வாலட்டை இணைக்கத் தூண்டுகிறது.new ethers.Contract(contractAddress, contractABI, provider)எங்கள் ஸ்மார்ட் ஒப்பந்தத்தின் ஒரு நிகழ்வை உருவாக்குகிறது, இது அதனுடன் தொடர்புகொள்ள அனுமதிக்கிறது. ஆரம்பத்தில், தரவைப் படிக்க நாங்கள்providerஐப் பயன்படுத்துகிறோம்.- ஆரம்ப
storedDataஐப் பெற்று காண்பிக்கிறோம். - பயனர் தங்கள் வாலட்டில் கணக்குகளை மாற்றினால் UI ஐப் புதுப்பிக்க
accountsChangedக்கான ஒரு நிகழ்வு கேட்பாளரை அமைத்துள்ளோம்.
4. ஸ்மார்ட் ஒப்பந்தத்துடன் தொடர்புகொள்ளுதல் (தரவைப் படித்தல்):
ஒரு ஸ்மார்ட் ஒப்பந்தத்திலிருந்து தரவைப் படிப்பது ஒரு படிக்க-மட்டும் செயல்பாடு மற்றும் எரிவாயு கட்டணம் இல்லை. வழங்குநருடன் பெறப்பட்ட ஒப்பந்த நிகழ்வைப் பயன்படுத்தி வியூ அல்லது பியூர் செயல்பாடுகளை நீங்கள் அழைக்கலாம்.
// Inside the App component, after setting up the contract instance:
const refreshValue = async () => {
if (contract) {
const currentValue = await contract.storedData();
setStoredValue(currentValue.toString());
}
};
// In your JSX, you would have a button to call this:
//
5. ஸ்மார்ட் ஒப்பந்தத்துடன் தொடர்புகொள்ளுதல் (தரவை எழுதுதல்):
ஒரு ஸ்மார்ட் ஒப்பந்தத்தில் தரவை எழுதுவது (நிலையை மாற்றியமைக்கும் செயல்பாடுகளை அழைப்பது) ஒரு கையொப்பமிட்டவரை (signer) கோருகிறது மற்றும் எரிவாயு கட்டணங்களை ஈர்க்கிறது. பரிவர்த்தனைக்கு அங்கீகாரம் அளிப்பதில் பயனரின் வாலட் ஒரு முக்கிய பங்கை வகிக்கிறது.
// Inside the App component:
const handleInputChange = (event) => {
setInputValue(event.target.value);
};
const updateStoredValue = async () => {
if (contract && signer && inputValue) {
try {
// Create a contract instance with the signer to send transactions
const contractWithSigner = contract.connect(signer);
const tx = await contractWithSigner.set(ethers.utils.parseUnits(inputValue, "ether")); // Assuming 'set' expects uint256
// Wait for the transaction to be mined
await tx.wait();
setInputValue(''); // Clear input after successful update
refreshValue(); // Refresh the displayed value
alert("Value updated successfully!");
} catch (error) {
console.error("Error updating value:", error);
alert("Failed to update value. Check console for details.");
}
} else {
alert("Please enter a value and ensure your wallet is connected.");
}
};
// In your JSX:
// <input type="text" value={inputValue} onChange={handleInputChange} placeholder="Enter a number" />
// <button onClick={updateStoredValue} disabled={!account}>Update Value</button>
விளக்கம்:
- நாங்கள்
inputValueமற்றும்handleInputChangeஐப் பயன்படுத்தி பயனர் உள்ளீட்டைப் பெறுகிறோம். - முக்கியமாக,
contract.connect(signer)ஐப் பயன்படுத்தி ஒரு புதிய ஒப்பந்த நிகழ்வை உருவாக்குகிறோம். இதுsignerஇன் பரிவர்த்தனை அனுப்பும் திறன்களை எங்கள் ஒப்பந்த தொடர்புடன் பிணைக்கிறது. ethers.utils.parseUnits(inputValue, "ether")உள்ளீட்டு சரத்தை சாலிடிட்டியின்uint256க்கு ஏற்ற BigNumber வடிவமாக மாற்றுகிறது (உங்கள் ஒப்பந்தத்தின் எதிர்பார்க்கப்பட்ட உள்ளீட்டின் அடிப்படையில் அலகுகளை சரிசெய்யவும்).await tx.wait()பிளாக்செயினில் பரிவர்த்தனை உறுதிப்படுத்தப்படும் வரை செயல்பாட்டை நிறுத்துகிறது.- ஒரு பரிவர்த்தனை தோல்வியுற்றால் பயனருக்குத் தெரிவிக்க பிழை கையாளுதல் அவசியம்.
6. வாலட் இணைப்புகள் மற்றும் துண்டிப்புகளைக் கையாளுதல்:
வலுவான dApps பயனர்கள் தங்கள் வாலட்களை இணைக்கும் மற்றும் துண்டிக்கும் போது சரியாகக் கையாள வேண்டும்.
// In your App component's JSX:
const connectWallet = async () => {
if (window.ethereum) {
try {
const provider = new ethers.providers.Web3Provider(window.ethereum);
await window.ethereum.request({ method: 'eth_requestAccounts' });
setSigner(provider.getSigner());
const accounts = await provider.listAccounts();
setAccount(accounts[0]);
// Re-initialize contract with signer if needed for write operations immediately
const contractInstance = new ethers.Contract(contractAddress, contractABI, provider);
setContract(contractInstance.connect(provider.getSigner())); // Connect to the contract with the signer
alert("Wallet connected!");
} catch (error) {
console.error("Error connecting wallet:", error);
alert("Failed to connect wallet.");
}
} else {
alert("MetaMask or another Ethereum-compatible wallet is required!");
}
};
const disconnectWallet = () => {
setAccount(null);
setSigner(null);
setContract(null);
// Optionally, you might want to trigger a full page reload or clear state more aggressively
alert("Wallet disconnected.");
};
// In your JSX:
// {!account ? (
// <button onClick={connectWallet}>Connect Wallet</button>
// ) : (
// <div>
// <p>Connected Account: {account}</p>
// <button onClick={disconnectWallet}>Disconnect Wallet</button>
// </div>
// )}
7. ஸ்மார்ட் ஒப்பந்த நிகழ்வுகளைக் கேட்டல்:
முக்கியமான நிலை மாற்றங்களைப் பற்றி முன்புறத்திற்கு அறிவிக்க ஸ்மார்ட் ஒப்பந்தங்கள் நிகழ்வுகளை வெளியிட முடியும். UI ஐப் புதுப்பிக்க தொடர்ச்சியான வாக்கெடுப்பை விட இது ஒரு திறமையான வழியாகும்.
// Inside the useEffect hook, after setting up the contract instance:
if (contract) {
// Example: Listening for a hypothetical 'ValueChanged' event from SimpleStorage
contract.on("ValueChanged", (newValue, event) => {
console.log("ValueChanged event received:", newValue.toString());
setStoredValue(newValue.toString());
});
// Clean up the event listener when the component unmounts
return () => {
if (contract) {
contract.removeAllListeners(); // Or specify the event name
}
};
}
குறிப்பு: இது செயல்பட, உங்கள் SimpleStorage ஒப்பந்தம் ஒரு நிகழ்வை வெளியிட வேண்டும், எடுத்துக்காட்டாக, set செயல்பாட்டில்:
// Inside the SimpleStorage contract:
// ...
event ValueChanged(uint256 newValue);
function set(uint256 x) public {
storedData = x;
emit ValueChanged(x); // Emit the event
}
// ...
உலகளாவிய பார்வையாளர்களுக்கான மேம்பட்ட கருத்தாய்வுகள்
உலகளாவிய பார்வையாளர்களுக்கான dApps ஐ உருவாக்குவதற்கு அடிப்படை ஒருங்கிணைப்பிற்கு அப்பால் பல்வேறு காரணிகளை கவனமாக கருத்தில் கொள்ள வேண்டும்:
1. பயனர் அனுபவம் மற்றும் வாலட் சுருக்கம்:
- உள்ளேறுதல்: பல பயனர்கள் கிரிப்டோ வாலட்களுக்குப் புதியவர்கள். MetaMask, Trust Wallet அல்லது Coinbase Wallet போன்ற வாலட்களை எவ்வாறு அமைப்பது மற்றும் பயன்படுத்துவது என்பது குறித்த தெளிவான வழிமுறைகளையும் வழிகாட்டல்களையும் வழங்கவும்.
- வாலட் இணைப்பு: MetaMask ஐப் பயன்படுத்தாத பயனர்களுக்கு அணுகலை மேம்படுத்த, பரந்த அளவிலான மொபைல் மற்றும் டெஸ்க்டாப் வாலட்களை ஆதரிக்க WalletConnect உடன் ஒருங்கிணைக்கவும்.
@web3-react/walletconnect-connectorஅல்லதுrainbow-kitபோன்ற நூலகங்கள் இதை நெறிப்படுத்தலாம். - நெட்வொர்க் விழிப்புணர்வு: பயனர்கள் சரியான பிளாக்செயின் நெட்வொர்க்கில் (எ.கா., Ethereum Mainnet, Polygon, Binance Smart Chain) இருப்பதை உறுதிப்படுத்தவும். நெட்வொர்க் தகவல்களைக் காண்பித்து, தேவைப்பட்டால் மாற பயனர்களுக்கு வழிகாட்டவும்.
- எரிவாயு கட்டணங்கள்: எரிவாயு கட்டணங்கள் நிலையற்றதாக இருக்கலாம் மற்றும் நெட்வொர்க்கிற்கு ஏற்ப மாறுபடும். சாத்தியமான எரிவாயு செலவுகள் மற்றும் பரிவர்த்தனை உறுதிப்படுத்தல் நேரங்கள் குறித்து பயனர்களுக்குத் தெரிவிக்கவும். எரிவாயு கட்டணத்தைச் சுருக்க, மெட்டா-பரிவர்த்தனைகள் போன்ற உத்திகளைக் கருத்தில் கொள்ளவும்.
2. சர்வதேசமயமாக்கல் (i18n) மற்றும் உள்ளூர்மயமாக்கல் (l10n):
- மொழி ஆதரவு: UI கூறுகள், பிழை செய்திகள் மற்றும் வழிமுறைகளை பல மொழிகளில் மொழிபெயர்க்கவும்.
react-intlஅல்லதுi18nextபோன்ற நூலகங்கள் விலைமதிப்பற்றதாக இருக்கும். - கலாச்சார நுணுக்கங்கள்: வடிவமைப்பு, வண்ணத் திட்டங்கள் மற்றும் தொடர்பு பாணிகளில் உள்ள கலாச்சார வேறுபாடுகளை கவனத்தில் கொள்ளவும். ஒரு கலாச்சாரத்தில் ஏற்றுக்கொள்ளக்கூடிய அல்லது கவர்ச்சிகரமான ஒன்று மற்றொன்றில் இல்லாமல் இருக்கலாம்.
- தேதி மற்றும் நேர வடிவங்கள்: பயனர் நட்பு, உள்ளூர்மயமாக்கப்பட்ட வடிவத்தில் தேதிகள் மற்றும் நேரங்களைக் காண்பிக்கவும்.
- எண் மற்றும் நாணய வடிவமைப்பு: உள்ளூர் மரபுகளின்படி எண்கள் மற்றும் காட்டப்படும் எந்த கிரிப்டோகரன்சி அளவுகளையும் வடிவமைக்கவும். ஸ்மார்ட் ஒப்பந்தங்கள் துல்லியமான எண் மதிப்புகளுடன் செயல்பட்டாலும், முன்புற விளக்கக்காட்சி உள்ளூர்மயமாக்கப்படலாம்.
3. செயல்திறன் மற்றும் அளவிடுதல்:
- RPC எண்ட் பாயிண்ட்கள்: அனைத்து தொடர்புகளுக்கும் மெட்டாமாஸ்க் மட்டுமே சார்ந்து இருப்பது தரவைப் பெறுவதில் மெதுவாக இருக்கலாம். வேகமான படிக்க செயல்பாடுகளுக்கு அர்ப்பணிக்கப்பட்ட RPC வழங்குநர்களைப் (எ.கா., Infura, Alchemy) பயன்படுத்துவதைக் கவனியுங்கள்.
- தற்காலிக சேமிப்பு: பிளாக்செயின் வினவல்களைக் குறைக்க, அடிக்கடி அணுகப்படும், உணர்வற்ற தரவுகளுக்கு கிளையன்ட் பக்க தற்காலிக சேமிப்பைச் செயல்படுத்தவும்.
- நம்பிக்கையான புதுப்பிப்புகள்: பிளாக்செயின் பரிவர்த்தனை உறுதிப்படுத்தப்படுவதற்கு முன்பே, ஒரு செயலைத் தொடங்கும்போது பயனருக்கு உடனடி காட்சி கருத்துக்களை வழங்கவும்.
- லேயர் 2 தீர்வுகள்: அதிக உற்பத்தித்திறன் மற்றும் குறைந்த பரிவர்த்தனை கட்டணம் தேவைப்படும் பயன்பாடுகளுக்கு, Optimism, Arbitrum அல்லது zkSync போன்ற லேயர் 2 அளவிடுதல் தீர்வுகளுடன் ஒருங்கிணைப்பதைக் கருத்தில் கொள்ளுங்கள்.
4. பாதுகாப்பு சிறந்த நடைமுறைகள்:
- உள்ளீட்டு சரிபார்ப்பு: முன்புறத்தில் பயனர் உள்ளீட்டை எப்போதும் சரிபார்க்கவும், ஆனால் முன்புற சரிபார்ப்பை மட்டுமே ஒருபோதும் நம்ப வேண்டாம். தீங்கிழைக்கும் உள்ளீடுகளைத் தடுக்க ஸ்மார்ட் ஒப்பந்தம் itself வலுவான சரிபார்ப்பைக் கொண்டிருக்க வேண்டும்.
- ABI பாதுகாப்பு: உங்கள் ஸ்மார்ட் ஒப்பந்தத்திற்கு சரியான மற்றும் சரிபார்க்கப்பட்ட ABI ஐப் பயன்படுத்துகிறீர்கள் என்பதை உறுதிப்படுத்தவும். தவறான ABIs எதிர்பாராத செயல்பாட்டு அழைப்புகளுக்கு வழிவகுக்கும்.
- HTTPS: மேன்-இன்-தி-மிடில் தாக்குதல்களில் இருந்து பாதுகாக்க உங்கள் முன்புற பயன்பாட்டை எப்போதும் HTTPS வழியாக வழங்கவும்.
- சார்பு மேலாண்மை: பாதுகாப்பு பாதிப்புகளை சரிசெய்ய உங்கள் திட்ட சார்புகளை (Web3 நூலகங்கள் உட்பட) புதுப்பித்த நிலையில் வைத்திருக்கவும்.
- ஸ்மார்ட் ஒப்பந்த தணிக்கைகள்: உற்பத்தி dApps க்கு, உங்கள் ஸ்மார்ட் ஒப்பந்தங்கள் தொழில்முறை பாதுகாப்பு தணிக்கைகளுக்கு உட்பட்டுள்ளன என்பதை உறுதிப்படுத்தவும்.
- தனிப்பட்ட சாவி மேலாண்மை: பயனர்கள் தங்கள் தனிப்பட்ட சாவிகள் அல்லது விதை சொற்றொடர்களை ஒருபோதும் பகிரக்கூடாது என்பதை வலியுறுத்தவும். உங்கள் முன்புற பயன்பாடு தனிப்பட்ட சாவிகளை நேரடியாகக் கோரவோ அல்லது கையாளவோ கூடாது.
5. பிழை கையாளுதல் மற்றும் பயனர் கருத்து:
- தெளிவான பிழை செய்திகள்: பயனர்களுக்கு குறிப்பிட்ட மற்றும் செயல்படுத்தக்கூடிய பிழை செய்திகளை வழங்கவும், சிக்கல்களை எவ்வாறு தீர்ப்பது என்று அவர்களுக்கு வழிகாட்டவும் (எ.கா., "போதுமான இருப்பு இல்லை," "தயவுசெய்து பாலிகான் நெட்வொர்க்கிற்கு மாறவும்," "வாலட் மூலம் பரிவர்த்தனை நிராகரிக்கப்பட்டது").
- ஏற்றும் நிலைகள்: பரிவர்த்தனைகள் நிலுவையில் உள்ளன அல்லது தரவு எடுக்கப்படுகிறது என்பதைக் குறிக்கவும்.
- பரிவர்த்தனை கண்காணிப்பு: பிளாக் எக்ஸ்ப்ளோரர்களில் (Etherscan போன்றவை) தங்கள் நடந்து கொண்டிருக்கும் பரிவர்த்தனைகளைக் கண்காணிக்க பயனர்களுக்கு வழிகளை வழங்கவும்.
கருவிகள் மற்றும் மேம்பாட்டு பணிப்பாய்வு
திறம்பட dApps ஐ உருவாக்குவதற்கும் வரிசைப்படுத்துவதற்கும் ஒரு நெறிப்படுத்தப்பட்ட மேம்பாட்டு பணிப்பாய்வு முக்கியமானது. முக்கிய கருவிகள் பின்வருமாறு:
- Hardhat / Truffle: ஸ்மார்ட் ஒப்பந்தங்களை தொகுத்தல், வரிசைப்படுத்துதல், சோதனை செய்தல் மற்றும் பிழைதிருத்தம் செய்வதற்கான மேம்பாட்டு சூழல்கள். அவை முன்புற ஒருங்கிணைப்புக்கு அவசியமான ஒப்பந்த கலைப்பொருட்களையும் (ABIs உட்பட) உருவாக்குகின்றன.
- Ganache: உள்ளூர் சோதனைகள் மற்றும் பிழைதிருத்தம் செய்யப் பயன்படுத்தப்படும் எத்திரியம் மேம்பாட்டிற்கான ஒரு தனிப்பட்ட பிளாக்செயின்.
- Etherscan / Polygonscan / போன்றவை: ஒப்பந்தக் குறியீட்டைச் சரிபார்த்தல், பரிவர்த்தனைகளைக் கண்காணித்தல் மற்றும் பிளாக்செயின் தரவை ஆய்வு செய்வதற்கான பிளாக் எக்ஸ்ப்ளோரர்கள்.
- IPFS (InterPlanetary File System): நிலையான முன்புற சொத்துக்களின் பரவலாக்கப்பட்ட சேமிப்பிற்காக, உங்கள் முழு dApp ஐயும் தணிக்கை-எதிர்ப்பு ஆக்குகிறது.
- The Graph: பிளாக்செயின் தரவை குறியிட மற்றும் வினவ ஒரு பரவலாக்கப்பட்ட நெறிமுறை, இது பிளாக்செயினில் நேரடியாக வினவுவதற்குப் பதிலாக குறியிடப்பட்ட தரவை வழங்குவதன் மூலம் dApp முன்புறங்களின் செயல்திறனை கணிசமாக மேம்படுத்த முடியும்.
வழக்கு ஆய்வுகள்: உலகளாவிய dApp எடுத்துக்காட்டுகள்
சாலிடிட்டி மற்றும் Web3 ஒருங்கிணைப்புடன் கட்டப்பட்ட ஏராளமான dApps உலகளாவிய பார்வையாளர்களுக்கு சேவை செய்கின்றன:
- பரவலாக்கப்பட்ட நிதி (DeFi) தளங்கள்: Uniswap (பரவலாக்கப்பட்ட பரிமாற்றம்), Aave (கடன் மற்றும் கடன் வாங்குதல்), Compound (கடன் நெறிமுறை) ஆகியவை உலகெங்கிலும் உள்ள பயனர்கள் இடைத்தரகர்கள் இல்லாமல் நிதி சேவைகளை அணுக அனுமதிக்கின்றன. அவற்றின் முன்புறங்கள் சிக்கலான DeFi ஸ்மார்ட் ஒப்பந்தங்களுடன் தடையின்றி தொடர்பு கொள்கின்றன.
- மாற்ற முடியாத டோக்கன் (NFT) சந்தைகள்: OpenSea, Rarible மற்றும் Foundation ஆகியவை உலகளவில் கலைஞர்கள் மற்றும் சேகரிப்பாளர்கள் தனித்துவமான டிஜிட்டல் சொத்துக்களை உருவாக்க, வாங்க மற்றும் விற்க உதவுகின்றன, NFT ஸ்மார்ட் ஒப்பந்தங்களுடன் (ERC-721 அல்லது ERC-1155 போன்றவை) முன்புற UI கள் நேரடியாக தொடர்பு கொள்கின்றன.
- பரவலாக்கப்பட்ட தன்னாட்சி அமைப்புகள் (DAOs): Snapshot போன்ற தளங்கள் டோக்கன் ஹோல்டிங்குகளைப் பயன்படுத்தி முன்மொழிவுகளில் வாக்களிக்க உலகளாவிய சமூகங்களை அனுமதிக்கின்றன, நிர்வாக ஸ்மார்ட் ஒப்பந்தங்களுடன் தொடர்புகொள்வதன் மூலம் முன்மொழிவு உருவாக்கம் மற்றும் வாக்களிப்பை முன்புறங்கள் எளிதாக்குகின்றன.
- விளையாடி சம்பாதிக்கும் கேம்கள்: Axie Infinity மற்றும் ஒத்த பிளாக்செயின் கேம்கள் இன்-கேம் சொத்துக்களுக்கு NFTs மற்றும் டோக்கன்களைப் பயன்படுத்துகின்றன, முன்புற விளையாட்டு இடைமுகங்கள் இந்த சொத்துக்களை வர்த்தகம் செய்வதற்கும் நிர்வகிப்பதற்கும் ஸ்மார்ட் ஒப்பந்தங்களுடன் இணைகின்றன.
இந்த எடுத்துக்காட்டுகள் முன்புற ஸ்மார்ட் ஒப்பந்த ஒருங்கிணைப்பின் சக்தி மற்றும் வரம்பை எடுத்துக்காட்டுகின்றன, மில்லியன் கணக்கான உலகளாவிய பயனர்களை பரவலாக்கப்பட்ட பயன்பாடுகளுடன் இணைக்கின்றன.
முடிவுரை: பரவலாக்கப்பட்ட எதிர்காலத்திற்கு அதிகாரம் அளித்தல்
முன்புற ஸ்மார்ட் ஒப்பந்த ஒருங்கிணைப்பு என்பது அடுத்த தலைமுறை பரவலாக்கப்பட்ட பயன்பாடுகளை உருவாக்குவதற்கான ஒரு முக்கியமான துறையாகும். சாலிடிட்டி ஸ்மார்ட் ஒப்பந்தங்களுக்கும் Web3 ஜாவாஸ்கிரிப்ட் நூலகங்களுக்கும் இடையிலான தொடர்பில் தேர்ச்சி பெறுவதன் மூலம், டெவலப்பர்கள் பிளாக்செயின் தொழில்நுட்பத்தின் நன்மைகளைப் பயன்படுத்தும் பயனர் நட்பு, பாதுகாப்பான மற்றும் சக்திவாய்ந்த dApps ஐ உருவாக்க முடியும். உலகளாவிய பார்வையாளர்களுக்கு, பயனர் அனுபவம், சர்வதேசமயமாக்கல், செயல்திறன் மற்றும் பாதுகாப்பு ஆகியவற்றில் உன்னிப்பான கவனம் மிக முக்கியமானது. Web3 சுற்றுச்சூழல் அமைப்பு தொடர்ந்து முதிர்ச்சியடையும் போது, பயனர் இடைமுகங்களுக்கும் பிளாக்செயின் தர்க்கத்திற்கும் இடையிலான இடைவெளியை தடையின்றி இணைக்கக்கூடிய திறமையான முன்புற டெவலப்பர்களுக்கான தேவை மட்டுமே அதிகரிக்கும், இது அனைவருக்கும் ஒரு பரவலாக்கப்பட்ட, வெளிப்படையான மற்றும் பயனர் மைய டிஜிட்டல் எதிர்காலத்தை உருவாக்கும்.
உலகளாவிய dApp மேம்பாட்டிற்கான முக்கிய குறிப்புகள்:
- பயனர் உள்ளேறுதல் மற்றும் வாலட் இணக்கத்தன்மைக்கு முன்னுரிமை அளியுங்கள்.
- பரந்த அணுகலுக்கு வலுவான சர்வதேசமயமாக்கலைச் செயல்படுத்துங்கள்.
- திறமையான தரவு சேகரிப்பு மற்றும் தற்காலிக சேமிப்பைப் பயன்படுத்தி செயல்திறனை மேம்படுத்துங்கள்.
- முன்புற மற்றும் ஸ்மார்ட் ஒப்பந்தக் குறியீடு இரண்டிற்கும் கடுமையான பாதுகாப்பு நடைமுறைகளைப் பின்பற்றுங்கள்.
- தெளிவான, உள்ளூர்மயமாக்கப்பட்ட கருத்து மற்றும் பிழை கையாளுதலை வழங்குங்கள்.
ஸ்மார்ட் ஒப்பந்தங்களின் சக்தியுடன் முன்புற அனுபவங்களை ஒருங்கிணைக்கும் பயணம் ஒரு அற்புதமான மற்றும் பலனளிக்கும் ஒன்றாகும். சிறந்த நடைமுறைகளைப் பின்பற்றி, வளர்ந்து வரும் கருவிகளைத் தழுவுவதன் மூலம், டெவலப்பர்கள் உலகளவில் பயனர்களுக்கு உண்மையிலேயே பரவலாக்கப்பட்ட மற்றும் அணுகக்கூடிய இணையத்தை உருவாக்க பங்களிக்க முடியும்.